package exercici1;

import java.util.ArrayList;

/**
 * Clase que implementa Mesa.
 * 
 * @author Jose Antonio Prieto Carballo NIA 37682<br>
 * Iván Gómez González NIA 33387
 * 
 * @see Spain - Barcelona - UPF - Telemàtica - 3r - Aplicacions Telemàtiques 2 - Practica 9
 */
public class Mesa {

    /** Ingreso Acumulado */
    private int ingresoAcumulado;
    /** Ingreso Actual */
    private int ingresoActual;
    /** Identificador */
    private int id;
    /** Lista de consumos */
    private ArrayList<Producto> consumos;

    /**
     * Constructor
     * @param idMesa
     */
    public Mesa(int idMesa) {
        this.id = idMesa;
        consumos = new ArrayList<Producto>();
        ingresoAcumulado = 0;
        ingresoActual = 0;
    }

    /**
     * Función que retorna un ArrayList con los productos consumidos hasta el momento por la mesa.
     * @return
     */
    public ArrayList<Producto> getProductosActual() {
        return consumos;
    }

    /**
     * Getter. Retorna el identificador de la mesa.
     * @return
     */
    public int getId() {
        return id;
    }

    /**
     * Getter. Retorna el ingreso actual de la mesa.
     * @return
     */
    public int getIngresoActual() {
        return ingresoActual;
    }

    /**
     * Getter. Retorna el ingreso acumulado de la mesa.
     * @return
     */
    public int getIngresoAcumulado() {
        return ingresoAcumulado;
    }

    /**
     * Función que agrega un producto a la mesa.
     * @param p
     */
    public void agregarPedido(Producto p) {
        // Añadimos el producto a la lista de consumos de la mesa.
        consumos.add(p);
        // Añadimos el precio del producto al consumo actual
        setIngresoActual(getIngresoActual() + p.getPrecio());
    }

    /**
     * Función que sirve para cerrar la cuenta de la mesa.
     */
    public void cerrarCuenta() {
        // Acumulamos el ingreso
        setIngresoAcumulado(getIngresoAcumulado() + getIngresoActual());
        // Volvemos a cero el ingreso actual de la mesa
        setIngresoActual(0);
        // Vaciamos la lista de consumos de la mesa que ya han sido facturados
        consumos.clear();
    }

    /* Setters Adicionales */
    
    /**
     * Setter. Ajusta el ingreso actual.
     * @param val
     */
    public void setIngresoActual(int val) {
        this.ingresoActual = val;
    }

    /**
     * Setter. Ajusta el ingreso acumulado.
     * @param val
     */
    public void setIngresoAcumulado(int val) {
        this.ingresoAcumulado = val;
    }
}
